import uuid
import libnum
import gmpy2
import random

# 111
flag = "flag{" + str(uuid.uuid4()) + "}"
print(flag)
m = libnum.s2n(flag)
p = libnum.generate_prime(1024)
q = libnum.generate_prime(1024)
n1 = p * q
p = libnum.generate_prime(1024)
q = libnum.generate_prime(1024)
n2 = p * q
p = libnum.generate_prime(1024)
q = libnum.generate_prime(1024)
n3 = p * q
while 1:
    e = random.randint(10, 20)
    print(e)
    if gmpy2.is_prime(e):
        break
c1 = pow(m, e, n1)
c2 = pow(m, e, n2)
c3 = pow(m, e, n3)

print("n1=", n1)
print("n2=", n2)
print("n3=", n3)

print("c1=", c1)
print("c2=", c2)
print("c3=", c3)
n1= 19825836032944105042402941897475237274261236669741780559577067178885044696773731898822265581251337400652595333852180838484753545237269998875749685804162437896757338434873120189767399676442288612617350061628798800209149465961637726107587576974193994912873702098136667570273713834694279633284723863301989732926740546465674199747013462454022491518505728460560155191949420763219704826230113184522070206552284856900483011712161355841900288706272563650104404275859154264806387571365332955850298611211649678745517177703247218546389535005619129544149134816672061624702269483543018862950450429378791725502639131131137842520217
n2= 20704693748738889095788271772019515477708610049348683087867082494548137813685685764618474186296378625403142760386760088052529965783853306932204909695494978889501512542724308546813360223485665835031151062299207813953949867850628287189623625618820389740279653953975260610493906223670290227626895018852750120363245004434312263812507361575198254955687785975671709740935793176607678730368988344319698727502030187153863621951969909796516493813615304791841692333917368431954059310334396672319541052264094020598908940309180029007433525785659936075255252555976496730471717604419969430384848706629192569586487328727951754585437
n3= 23142008172734009529936109663192359958451978833521032530926068359575833059326538179084884475511466773884996831716807331782791919561563045908927133729345540743769825817893035713122377149008663510270888040424001548490633115928930106142895149283964359215729559082299503304496372970987609854244423571722517170217787305978861266723099317986578277632588585347461384853378389910746875288707461117148583236466023229702812901552477216974474439787062070747472707141886511786813000954428622180760905373403492832607156266441225469574411549908599976692283599896024300869606134518213307109993844691260318504618481398046126450931157
c1= 13672501201173911215792147974695398514527784818868216435918061822258132074085783081042870763752619880923765186273649249667295020533274192934670440519664370477499814716853718468517107530042720012825281662121430990021264481654380130528328764817974966336517325595913316420093142537980792588340948381177588576864049314484238722922511368168894747776610117012544840670504479581855197365533837309123252537507463593265811670265213721708886335324033703571275409992223104005385452123313406906802040375906156484780087206498502512608219655934096654156514600873507534982415480335239713727564667823300707253666046607829387667493445
c2= 273073000828829699625249952699734434288137446102416248668555159764243539623589362072183683603449003834266930169858941425940182580510431558683942918367158526633719333025661767124342663832545608717479742751780621309981647342394257407461288223982357433624508439878260920627320783511548468856191688061782671542476241367327240034640836720257102374750537776499155028840065447617241605939153291343002041637572492810671017660279385654820183604709125182499434134453239379800880229880156879310608020349862807785781766499951134535961972978711211495517060073508484869364285310496252797722629429435876929923227611729092986122462
c3= 7680112408934544154947085042579162037604360225650955690193868803532701788417403912717246264168111916566427824553247797652811875337512235352010016189757851418644872911426285418888209234442302817063056116707332776974126355371412637270093329557244421476625457722225321339718751671643787047476719743992658008400294373132889808361706579894879983359529049630349643142624857365499573332977284566342721047878805685325967052449399301094424230055744735402282291544596878813247145019600404771426850698905190193645116698635485424169397818959420103107346098706594694401160363571749638081051056004061792011163892134659705873888659
